#ifndef __ACTIONS__
#define __ACTIONS__

#include <stdlib.h>
#include <stdio.h>
#include <cmath>
#include <iostream>

#include "attributs.hpp"
#include "actions.hpp"
#include "TableIdent.hpp"
#include "TableSymb.hpp"
#include "SymboleAff.hpp"
#include "Var.hpp"
#include "Ptr.hpp"
#include "Program.hpp"
#include "GenerateurType.hpp"
#include "SymboleVal.hpp"

void actionProgHeader ( tAttrIdent& progName );

void actionDeclConst ( tAttrIdent& ident, tAttrExpr& expr );

void actionDeclVar ( tAttrListIdent& listIdent, tAttrBaseType& baseType );

void actionListIdent ( tAttrListIdent& listIdent, tAttrIdent& ident );

void actionListIdentDernier ( tAttrListIdent& listIdent, tAttrIdent& ident );

void actionBaseTypeInt ( tAttrBaseType& baseType );

void actionBaseTypeReal ( tAttrBaseType& baseType );

void actionListInstr ( tAttrListInstr& retour,
		const tAttrInstr& instr, const tAttrListInstr& liste );

void actionListInstr ( tAttrListInstr& retour );

void actionInstr ( tAttrInstr& instr, tAttrVarExpr& varExpr,
		const tAttrExpr& expr );

void actionAdd ( tAttrExpr& retour, const tAttrExpr& opg,
		const tAttrExpr& opd );

void actionSub ( tAttrExpr& retour, const tAttrExpr& opg,
		const tAttrExpr& opd );

void actionMul ( tAttrExpr& retour, const tAttrExpr& opg,
		const tAttrExpr& opd );

void actionDiv ( tAttrExpr& retour, const tAttrExpr& opg,
		const tAttrExpr& opd );

void actionExp ( tAttrExpr& retour, const tAttrExpr& opg,
		const tAttrExpr& opd );

void actionSub ( tAttrExpr& retour, const tAttrExpr& operand );

void actionAdd ( tAttrExpr& retour, const tAttrExpr& operand );

void actionBrackets ( tAttrExpr& retour, const tAttrExpr& expr );

void actionConstante ( tAttrExpr& retour, const tAttrEntier& entier );

void actionConstante ( tAttrExpr& retour, const tAttrReel& reel );

void actionIdent ( tAttrVarExpr& retour, const tAttrIdent& ident );

/* Dereferencement de pointeur. */
void actionPtr ( tAttrVarExpr& retour, const tAttrIdent& ident );

#endif
